package com.libinshen.wxpay.payV3Wx.config;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;


@Configuration
@PropertySource("classpath:wxpay.properties") //读取配置文件
@ConfigurationProperties(prefix = "wxpay") //读取wxpay节点
@Data //使用set方法将wxpay节点中的值填充到当前类的属性中
@Slf4j
public class WxPayConfig {

//    @ApiModelProperty("商户号")
//    private String mchId;
//
//    @ApiModelProperty("商户API 证书序列号")
//    private String mchSerialNo;
//
//    @ApiModelProperty("商户私钥文件")
//    private String privateKeyPath;
//
//    @ApiModelProperty("API v3秘钥")
//    private String apiV3Key;
//
//    @ApiModelProperty("APPID")
//    private String appid;
//
//    @ApiModelProperty("微信服务器地址")
//    private String domain;
//
//    @ApiModelProperty("接收结果通知地址")
//    private String notifyDomain;
//
//    @ApiModelProperty("APIv2密钥,暂时先不做APIv2 版本，暂时不做")
//    private String partnerKey;
//
//    /**
//     * 获取商户的私钥文件
//     *
//     * @param filename 私钥文件路径
//     * @return
//     */
//    private PrivateKey getPrivateKey(String filename) {
//
//        try {
//            return PemUtil.loadPrivateKey(new FileInputStream(filename));
//        } catch (FileNotFoundException e) {
//            throw new RuntimeException("私钥文件不存在", e);
//        }
//    }
//
//    /**
//     * 获取签名验证器，测试以通过，商户私钥和配置信息不方便透漏，所以项目启动会有问题
//     *
//     * @return
//     */
//    @Bean
//    public Verifier getVerifier() {
//        log.info("获取签名验证器");
//        // 获取证书管理器实例
//        CertificatesManager certificatesManager = CertificatesManager.getInstance();
//        //获取商户的私钥
//        PrivateKey privateKey = getPrivateKey(privateKeyPath);
//
//        //商户私钥的签名对象
//        PrivateKeySigner privateKeySigner = new PrivateKeySigner(mchSerialNo, privateKey);
//
//        //验证微信支付平台的公钥的正确性。即身份认证对象
//        WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(mchId, privateKeySigner);
//
//        //向证书管理器增加需要自动更新商户平台证书的商户信息
//        try {
//            //该语句是更新下载最新证书使用的。
//            certificatesManager.putMerchant(mchId, wechatPay2Credentials, apiV3Key.getBytes(StandardCharsets.UTF_8));
//            //从证书管理器中获取verifier验证器
//            return certificatesManager.getVerifier(mchId);
//        } catch (Exception e) {
//            throw new RuntimeException();
//        }
//    }
//
//
//    /**
//     * 获取http请求对象。
//     *
//     * @param verifier
//     * @return
//     */
//    @Bean
//    public CloseableHttpClient getWxPayClient(Verifier verifier) {
//        log.info("获取WxPayHttpClient");
//        //获取商户私钥文件
//        PrivateKey privateKey = getPrivateKey(privateKeyPath);
//
//        //身份认证对象
//        WechatPay2Validator wechatPay2Validator = new WechatPay2Validator(verifier);
//
//        WechatPayHttpClientBuilder wechatPayHttpClientBuilder = WechatPayHttpClientBuilder.create()
//                .withMerchant(mchId, mchSerialNo, privateKey)
//                .withValidator(wechatPay2Validator);
//
//        WechatPayHttpClientBuilder builder = wechatPayHttpClientBuilder;
//        CloseableHttpClient closeableHttpClient = builder.build();
//        return closeableHttpClient;
//    }
}
